]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Accept either an icon name or a GIcon on PopupImageMenuItem
authorMario Sanchez Prada <mario@endlessm.com>
Mon, 8 May 2017 10:36:35 +0000 (11:36 +0100)
committerMario Sanchez Prada <mario@endlessm.com>
Tue, 9 May 2017 17:32:23 +0000 (18:32 +0100)
Add an extra check to setIcon() so that either a GIcon or an string
with the icon's name is handlded, so that we can create menu items
in different ways (e.g. by passing a GIcon created from a resource).

https://bugzilla.gnome.org/show_bug.cgi?id=782166

js/ui/popupMenu.js

index d326ea83331343c7a1c3b14537ad6e3bc353c94b..53ab7c1004f5722fe80223f301ee080b01bed534 100644 (file)
@@ -2,6 +2,8 @@
 
 const Clutter = imports.gi.Clutter;
 const Gtk = imports.gi.Gtk;
+const Gio = imports.gi.Gio;
+const GObject = imports.gi.GObject;
 const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
@@ -389,7 +391,7 @@ const PopupImageMenuItem = new Lang.Class({
     Name: 'PopupImageMenuItem',
     Extends: PopupBaseMenuItem,
 
-    _init: function (text, iconName, params) {
+    _init: function (text, icon, params) {
         this.parent(params);
 
         this.label = new St.Label({ text: text });
@@ -398,11 +400,15 @@ const PopupImageMenuItem = new Lang.Class({
         this.actor.add_child(this._icon, { align: St.Align.END });
         this.actor.label_actor = this.label;
 
-        this.setIcon(iconName);
+        this.setIcon(icon);
     },
 
-    setIcon: function(name) {
-        this._icon.icon_name = name;
+    setIcon: function(icon) {
+        // The 'icon' parameter can be either a Gio.Icon or a string.
+        if (GObject.type_is_a(icon, Gio.Icon))
+            this._icon.gicon = icon;
+        else
+            this._icon.icon_name = icon;
     }
 });